# Makefile for the WASTE library (version 1.2)

# Put this makefile into the "WASTE 1.2 Distribution" folder.
# If you type "Make all", it will build five files:
#
# . WASTELib.o                  the WASTE library (classic 68k version)
# . WASTELib.CFMo               the WASTE library (CFM 68k version)
# . WASTELib.x                  the WASTE library (PPC version)
# . "WASTE Demo (CFM fat)"      the demo application (CFM 68k and PPC)
# . "WASTE Demo (classic 68k)"  the demo application (classic 68k, obviously)

# You can easily change the WASTE options, the compiler options, and the
# libraries to suit your needs.  (see below)


#### WASTE Options.  See ":WASTE 1.2:WASTEIntf.h" for details.

# The defaults are shown here.
WEDefs = -d WASTE_DEBUG=0 -d WASTE_OBJECTS=1 -d WASTE_UPPS=GENERATINGCFM 
         -d WASTE_REDRAW_SPEED=0 -d WASTE_NO_SYNCH=0 -d WASTE_NO_RO_CARET=1 
         -d WASTE_IC_SUPPORT=1 -d WASTE_OBJECTS_ARE_GLYPHS=0 
         -d WASTE_RESOLVE_FONT_DESIGNATORS=1 
         -d WASTE_WECALTEXT_DOES_REDRAW=0 -d WASTE_KURTHS_OPTION_ARROWS=1


#### Compilers and their options.

# Classic 68k
C = sc
COptions = {Defs} {Incl} -model far -w 17

# CFM 68k
CFMC = sc
CFMCOptions = {Defs} {Incl} -model cfmflat -w 17

# PPC
PPCC = mrc
PPCCOptions = {Defs} {Incl} -w 35


#### Libraries

Libs = "{libraries}MacRuntime.o" "{clibraries}StdCLib.far.o" 
   "{libraries}Interface.o"

CFMLibs = "{CFM68kLibraries}NuMacRuntime.o" "{sharedlibraries}StdCLib" 
    "{sharedlibraries}DragLib" "{sharedlibraries}InterfaceLib"

PPCLibs = "{ppclibraries}PPCCRuntime.o" "{sharedlibraries}StdCLib" 
    "{ppclibraries}StdCRuntime.o" "{sharedlibraries}DragLib" 
    "{sharedlibraries}InterfaceLib"


#### Common definitions

# Compiler options
Incl = -i ":WASTE C/C++ Headers:" {ICIncl} {OHIncl} {WEIncl} {WDIncl} {WTIncl}
Defs = {WEDefs}


#### Main target

all  everything


#### :WASTE 1.2:

WEObj = ":WASTE 1.2:WEArrays.c.o" ":WASTE 1.2:WEBirthDeath.c.o" 
    ":WASTE 1.2:WEDebug.c.o" ":WASTE 1.2:WEDrawing.c.o" 
    ":WASTE 1.2:WEHighLevelEditing.c.o" ":WASTE 1.2:WEInlineInput.c.o" 
    ":WASTE 1.2:WELineLayout.c.o" ":WASTE 1.2:WELongCoords.c.o" 
    ":WASTE 1.2:WELowLevelEditing.c.o" ":WASTE 1.2:WEMouse.c.o" 
    ":WASTE 1.2:WEObjects.c.o" ":WASTE 1.2:WEScraps.c.o" 
    ":WASTE 1.2:WESelecting.c.o" ":WASTE 1.2:WESelectors.c.o" 
    ":WASTE 1.2:WEUtilities.c.o"

WECFMObj = ":WASTE 1.2:WEArrays.c.CFMo" ":WASTE 1.2:WEBirthDeath.c.CFMo" 
    ":WASTE 1.2:WEDebug.c.CFMo" ":WASTE 1.2:WEDrawing.c.CFMo" 
    ":WASTE 1.2:WEHighLevelEditing.c.CFMo" ":WASTE 1.2:WEInlineInput.c.CFMo" 
    ":WASTE 1.2:WELineLayout.c.CFMo" ":WASTE 1.2:WELongCoords.c.CFMo" 
    ":WASTE 1.2:WELowLevelEditing.c.CFMo" ":WASTE 1.2:WEMouse.c.CFMo" 
    ":WASTE 1.2:WEObjects.c.CFMo" ":WASTE 1.2:WEScraps.c.CFMo" 
    ":WASTE 1.2:WESelecting.c.CFMo" ":WASTE 1.2:WESelectors.c.CFMo" 
    ":WASTE 1.2:WEUtilities.c.CFMo"

WEPPCObj = ":WASTE 1.2:WEArrays.c.x" ":WASTE 1.2:WEBirthDeath.c.x" 
    ":WASTE 1.2:WEDebug.c.x" ":WASTE 1.2:WEDrawing.c.x" 
    ":WASTE 1.2:WEHighLevelEditing.c.x" ":WASTE 1.2:WEInlineInput.c.x" 
    ":WASTE 1.2:WELineLayout.c.x" ":WASTE 1.2:WELongCoords.c.x" 
    ":WASTE 1.2:WELowLevelEditing.c.x" ":WASTE 1.2:WEMouse.c.x" 
    ":WASTE 1.2:WEObjects.c.x" ":WASTE 1.2:WEScraps.c.x" 
    ":WASTE 1.2:WESelecting.c.x" ":WASTE 1.2:WESelectors.c.x" 
    ":WASTE 1.2:WEUtilities.c.x"

WEIncl = -i ":WASTE 1.2:"

WETarg = WASTELib.o WASTELib.CFMo WASTELib.x

WASTELib.o  {WEObj}
  lib -o WASTELib.o {WEObj}

WASTELib.CFMo  {WECFMObj}
  lib -o WASTELib.CFMo {WECFMObj}

WASTELib.x  {WEPPCObj}
  PPCLink -xm library -o WASTELib.x {WEPPCObj}

clean 
  delete -i {WEObj} {WECFMObj} {WEPPCObj}


#### :Object Handlers:

OHObj = ":Object Handlers:WEObjectHandlers.c.o"
OHCFMObj = ":Object Handlers:WEObjectHandlers.c.CFMo"
OHPPCObj = ":Object Handlers:WEObjectHandlers.c.x"
OHIncl = -i ":Object Handlers:"
OHTarg = {OHObj} {OHCFMObj} {OHPPCObj}

clean 
  delete -i {OHTarg}


#### :WASTE Tabs:

WTObj = ":WASTE Tabs:WETabs.c.o" ":WASTE Tabs:WETabHooks.c.o"
WTCFMObj = ":WASTE Tabs:WETabs.c.CFMo" ":WASTE Tabs:WETabHooks.c.CFMo"
WTPPCObj = ":WASTE Tabs:WETabs.c.x" ":WASTE Tabs:WETabHooks.c.x"
WTIncl = -i ":Waste Tabs:"
WTTarg = {WTObj} {WTCFMObj} {WTPPCObj}

clean 
  delete -i {WTTarg}


#### Internet Config stuff (directory ":Minimal IC APIs:")

ICObj = 
ICCFMObj = ":Minimal IC APIs:ICCFMGlue.c.CFMo"
ICPPCObj = ":Minimal IC APIs:ICCFMGlue.c.x"
ICIncl = -i ":Minimal IC APIs:"
ICTarg = {ICObj} {ICCFMObj} {ICPPCObj}

clean 
  delete -i {ICTarg}


#### :WASTE Demo :

WDObj = ":WASTE Demo :DialogUtils.c.o" ":WASTE Demo :LongControls.c.o" 
    ":WASTE Demo :WEDemoAbout.c.o" ":WASTE Demo :WEDemoDrags.c.o" 
    ":WASTE Demo :WEDemoEvents.c.o" ":WASTE Demo :WEDemoFiles.c.o" 
    ":WASTE Demo :WEDemoInit.c.o" ":WASTE Demo :WEDemoIntf.c.o" 
    ":WASTE Demo :WEDemoMain.c.o" ":WASTE Demo :WEDemoMenus.c.o" 
    ":WASTE Demo :WEDemoScripting.c.o" ":WASTE Demo :WEDemoWindows.c.o" 
    ":WASTE Demo :qd.c.o"

WDLibs = WASTELib.o {WTObj} {OHObj} ":Minimal IC APIs:ICGlue.o"

WDCFMObj = ":WASTE Demo :DialogUtils.c.CFMo" 
    ":WASTE Demo :LongControls.c.CFMo" ":WASTE Demo :WEDemoAbout.c.CFMo" 
    ":WASTE Demo :WEDemoDrags.c.CFMo" ":WASTE Demo :WEDemoEvents.c.CFMo" 
    ":WASTE Demo :WEDemoFiles.c.CFMo" ":WASTE Demo :WEDemoInit.c.CFMo" 
    ":WASTE Demo :WEDemoIntf.c.CFMo" ":WASTE Demo :WEDemoMain.c.CFMo" 
    ":WASTE Demo :WEDemoMenus.c.CFMo" ":WASTE Demo :WEDemoScripting.c.CFMo" 
    ":WASTE Demo :WEDemoWindows.c.CFMo" ":WASTE Demo :qd.c.CFMo"

WDCFMLibs = WASTELib.CFMo {WTCFMObj} {OHCFMObj} {ICCFMObj}

WDPPCObj = ":WASTE Demo :DialogUtils.c.x" ":WASTE Demo :LongControls.c.x" 
    ":WASTE Demo :WEDemoAbout.c.x" ":WASTE Demo :WEDemoDrags.c.x" 
    ":WASTE Demo :WEDemoEvents.c.x" ":WASTE Demo :WEDemoFiles.c.x" 
    ":WASTE Demo :WEDemoInit.c.x" ":WASTE Demo :WEDemoIntf.c.x" 
    ":WASTE Demo :WEDemoMain.c.x" ":WASTE Demo :WEDemoMenus.c.x" 
    ":WASTE Demo :WEDemoScripting.c.x" ":WASTE Demo :WEDemoWindows.c.x" 
    ":WASTE Demo :qd.c.x"

WDPPCLibs = WASTELib.x {WTPPCObj} {OHPPCObj} {ICPPCObj}

WDIncl = -i ":WASTE Demo :"

WDTarg = "WASTE Demo (CFM fat)" "WASTE Demo (classic 68k)"

":WASTE Demo :qd.c" 
  echo "#include <QuickDraw.h>n QDGlobals qd;" > ":WASTE Demo :qd.c"

"WASTE Demo (classic 68k)"  {WDObj} {WDLibs}
  ilink -c OEDE {WDObj} {WDLibs} {Libs} -o "WASTE Demo (classic 68k)" 
        -model far -compact -pad 0 -state nouse

"WASTE Demo (classic 68k)"  ":WASTE Demo :WEDemo.rsrc"
  echo 'include ":WASTE Demo :WEDemo.rsrc";' 
     | rez -a -c OEDE -o "WASTE Demo (classic 68k)"
  setfile -a Bi "WASTE Demo (classic 68k)"

"WASTE Demo (CFM fat)"  {WDCFMObj} {WDCFMLibs}
  ilink -c OEDE {WDCFMObj} {WDCFMLibs} {CFMLibs} -o "WASTE Demo (CFM fat)" 
        -model cfmseg -state nouse

"WASTE Demo (CFM fat)"  {WDPPCObj} {WDPPCLibs}
  ppclink -c OEDE {WDPPCObj} {WDPPCLibs} {PPCLibs} -o "{tempfolder}WASTE-temp"
  mergefragment -z "{tempfolder}WASTE-temp" "WASTE Demo (CFM fat)"
  delete -i "{tempfolder}WASTE-temp"

"WASTE Demo (CFM fat)"  ":WASTE Demo :WEDemo.rsrc"
  echo 'include ":WASTE Demo :WEDemo.rsrc";' 
     | rez -a -c OEDE -o "WASTE Demo (CFM fat)"
  setfile -a Bi "WASTE Demo (CFM fat)"

clean 
  delete -i Demo.CFM Demo.PPC {WDObj} {WDCFMObj} {WDPPCObj} ":WASTE Demo :qd.c"


#### Main target (continued)
everything  {ICTarg} {OHTarg} {WETarg} {WDTarg}


#### Default rule for CFM 68k compilation.

.c.CFMo  .c
  {CFMC} {CFMCOptions} -o {targdir}{default}.c.CFMo {depdir}{default}.c


#### Dependencies
":Minimal IC APIs:ICCFMGlue.c.o" ":Minimal IC APIs:ICCFMGlue.c.CFMo" ":Minimal IC APIs:ICCFMGlue.c.x" 
   ":Minimal IC APIs:ICTypes.h" ":Minimal IC APIs:ICAPI.h"

":Object Handlers:WEObjectHandlers.c.o" ":Object Handlers:WEObjectHandlers.c.CFMo" ":Object Handlers:WEObjectHandlers.c.x" 
   ":Object Handlers:WEObjectHandlers.h" ":WASTE C/C++ Headers:WASTE.h" ":WASTE C/C++ Headers:LongCoords.h"

":WASTE 1.2:WEArrays.c.o" ":WASTE 1.2:WEArrays.c.CFMo" ":WASTE 1.2:WEArrays.c.x" 
":WASTE 1.2:WEBirthDeath.c.o" ":WASTE 1.2:WEBirthDeath.c.CFMo" ":WASTE 1.2:WEBirthDeath.c.x" 
":WASTE 1.2:WEDebug.c.o" ":WASTE 1.2:WEDebug.c.CFMo" ":WASTE 1.2:WEDebug.c.x" 
":WASTE 1.2:WEDrawing.c.o" ":WASTE 1.2:WEDrawing.c.CFMo" ":WASTE 1.2:WEDrawing.c.x" 
":WASTE 1.2:WEHighLevelEditing.c.o" ":WASTE 1.2:WEHighLevelEditing.c.CFMo" ":WASTE 1.2:WEHighLevelEditing.c.x" 
":WASTE 1.2:WEInlineInput.c.o" ":WASTE 1.2:WEInlineInput.c.CFMo" ":WASTE 1.2:WEInlineInput.c.x" 
":WASTE 1.2:WELineLayout.c.o" ":WASTE 1.2:WELineLayout.c.CFMo" ":WASTE 1.2:WELineLayout.c.x" 
":WASTE 1.2:WELongCoords.c.o" ":WASTE 1.2:WELongCoords.c.CFMo" ":WASTE 1.2:WELongCoords.c.x" 
":WASTE 1.2:WELowLevelEditing.c.o" ":WASTE 1.2:WELowLevelEditing.c.CFMo" ":WASTE 1.2:WELowLevelEditing.c.x" 
":WASTE 1.2:WEMouse.c.o" ":WASTE 1.2:WEMouse.c.CFMo" ":WASTE 1.2:WEMouse.c.x" 
":WASTE 1.2:WEObjects.c.o" ":WASTE 1.2:WEObjects.c.CFMo" ":WASTE 1.2:WEObjects.c.x" 
":WASTE 1.2:WEScraps.c.o" ":WASTE 1.2:WEScraps.c.CFMo" ":WASTE 1.2:WEScraps.c.x" 
":WASTE 1.2:WESelecting.c.o" ":WASTE 1.2:WESelecting.c.CFMo" ":WASTE 1.2:WESelecting.c.x" 
":WASTE 1.2:WESelectors.c.o" ":WASTE 1.2:WESelectors.c.CFMo" ":WASTE 1.2:WESelectors.c.x" 
":WASTE 1.2:WESharedLibrary.c.o" ":WASTE 1.2:WESharedLibrary.c.CFMo" ":WASTE 1.2:WESharedLibrary.c.x" 
":WASTE 1.2:WEUtilities.c.o" ":WASTE 1.2:WEUtilities.c.CFMo" ":WASTE 1.2:WEUtilities.c.x" 
   ":WASTE 1.2:WASTEIntf.h" ":WASTE 1.2:LongCoords.h"
":WASTE 1.2:WEMouse.c.o" ":WASTE 1.2:WEMouse.c.CFMo" ":WASTE 1.2:WEMouse.c.x" 
   ":Minimal IC APIs:ICTypes.h" ":Minimal IC APIs:ICAPI.h"

":WASTE Demo :DialogUtils.c.o" ":WASTE Demo :DialogUtils.c.CFMo" ":WASTE Demo :DialogUtils.c.x" 
":WASTE Demo :LongControls.c.o" ":WASTE Demo :LongControls.c.CFMo" ":WASTE Demo :LongControls.c.x" 
":WASTE Demo :WEDemoAbout.c.o" ":WASTE Demo :WEDemoAbout.c.CFMo" ":WASTE Demo :WEDemoAbout.c.x" 
":WASTE Demo :WEDemoDrags.c.o" ":WASTE Demo :WEDemoDrags.c.CFMo" ":WASTE Demo :WEDemoDrags.c.x" 
":WASTE Demo :WEDemoEvents.c.o" ":WASTE Demo :WEDemoEvents.c.CFMo" ":WASTE Demo :WEDemoEvents.c.x" 
":WASTE Demo :WEDemoFiles.c.o" ":WASTE Demo :WEDemoFiles.c.CFMo" ":WASTE Demo :WEDemoFiles.c.x" 
":WASTE Demo :WEDemoInit.c.o" ":WASTE Demo :WEDemoInit.c.CFMo" ":WASTE Demo :WEDemoInit.c.x" 
":WASTE Demo :WEDemoIntf.c.o" ":WASTE Demo :WEDemoIntf.c.CFMo" ":WASTE Demo :WEDemoIntf.c.x" 
":WASTE Demo :WEDemoMain.c.o" ":WASTE Demo :WEDemoMain.c.CFMo" ":WASTE Demo :WEDemoMain.c.x" 
":WASTE Demo :WEDemoMenus.c.o" ":WASTE Demo :WEDemoMenus.c.CFMo" ":WASTE Demo :WEDemoMenus.c.x" 
":WASTE Demo :WEDemoScripting.c.o" ":WASTE Demo :WEDemoScripting.c.CFMo" ":WASTE Demo :WEDemoScripting.c.x" 
":WASTE Demo :WEDemoWindows.c.o" ":WASTE Demo :WEDemoWindows.c.CFMo" ":WASTE Demo :WEDemoWindows.c.x" 
   ":WASTE Demo :WEDemoIntf.h" ":WASTE C/C++ Headers:WASTE.h" ":WASTE C/C++ Headers:LongCoords.h"
":WASTE Demo :WEDemoInit.c.o" ":WASTE Demo :WEDemoInit.c.CFMo" ":WASTE Demo :WEDemoInit.c.x" 
   ":Object Handlers:WEObjectHandlers.h"
":WASTE Demo :WEDemoMenus.c.o" ":WASTE Demo :WEDemoMenus.c.CFMo" ":WASTE Demo :WEDemoMenus.c.x" 
   ":WASTE Tabs:WETabs.h"

":WASTE Tabs:WETabHooks.c.o" ":WASTE Tabs:WETabHooks.c.CFMo" ":WASTE Tabs:WETabHooks.c.x" 
   ":WASTE Tabs:WETabHooks.h" ":WASTE C/C++ Headers:WASTE.h" ":WASTE C/C++ Headers:LongCoords.h"
":WASTE Tabs:WETabs.c.o" ":WASTE Tabs:WETabs.c.CFMo" ":WASTE Tabs:WETabs.c.x" 
   ":WASTE Tabs:WETabs.h" ":WASTE C/C++ Headers:WASTE.h" ":WASTE C/C++ Headers:LongCoords.h"
